contents

벡터 검색은 정확한 키워드 일치를 찾는 대신, 의미와 문맥을 기반으로 쿼리와 가장 유사한 항목을 찾는 정보 검색 방법입니다. 이는 "시맨틱 검색", 추천 엔진, 현대 AI 애플리케이션을 구동하는 핵심 기술입니다.

그 강력함을 이해하려면 먼저 기존 검색 방식의 한계를 생각해봐야 합니다.


작동 원리: 세 가지 핵심 단계

벡터 검색은 임베딩, 인덱싱, 쿼리의 세 단계로 이루어집니다.

1단계: 임베딩 (모든 것을 숫자로 변환하기) 🧠

벡터 검색의 마법은 임베딩에서 시작됩니다. 임베딩은 텍스트, 이미지, 오디오와 같은 데이터를 벡터(숫자 목록) 형태로 변환한 수치적 표현입니다.

이는 강력한 수학적 관계를 만들어냅니다. 고전적인 예로 "왕" 벡터에서 "남자" 벡터를 빼고 "여자" 벡터를 더하면 "여왕" 벡터와 매우 가까운 벡터가 나옵니다.

벡터("왕") - 벡터("남자") + 벡터("여자") ≈ 벡터("여왕")

따라서 첫 번째 단계는 모든 데이터(모든 기사, 제품 설명 또는 이미지)를 이러한 벡터 임베딩으로 변환하여 저장하는 것입니다.


2단계: 인덱싱 (검색 가능한 지도 만들기) 🗺️

이제 수백만 개의 벡터가 있습니다. 사용자가 쿼리를 입력했을 때, 가장 가까운 벡터들을 어떻게 찾을 수 있을까요?

쿼리 벡터를 데이터베이스의 _모든 다른 벡터_와 일일이 비교하는 단순한 접근법(전수 조사 또는 "정확한 최근접 이웃" 검색)은 너무 느립니다.

이때 근사 근접 이웃(Approximate Nearest Neighbor, ANN) 알고리즘이 사용됩니다. ANN 인덱스는 매우 빠른 검색을 가능하게 하는 방식으로 벡터들을 구성하는 특별한 데이터 구조입니다.

이 인덱싱 과정은 보통 Pinecone, Weaviate, Milvus와 같은 전문 벡터 데이터베이스나 PostgreSQL( pgvector 확장 기능 사용)과 같은 기존 데이터베이스의 기능에 의해 처리됩니다.


3단계: 쿼리 (가장 가까운 이웃 찾기) 🔍

여기서 모든 것이 합쳐집니다.

  1. 쿼리 임베딩: 사용자의 검색 쿼리(예: "지능적인 사자"라는 텍스트 또는 업로드된 운동화 이미지)가 동일한 임베딩 모델을 통해 쿼리 벡터로 변환됩니다.

  2. 인덱스 검색: 시스템은 ANN 인덱스를 사용하여 데이터베이스에서 쿼리 벡터와 "가장 가까운" k개의 벡터를 찾습니다.

  3. "유사도" 측정: "유사도"는 거리 측정법을 사용하여 계산됩니다. 가장 일반적인 두 가지는 다음과 같습니다.

    • 코사인 유사도 (Cosine Similarity): 두 벡터 사이의 각도를 측정합니다. 각도가 작을수록 유사도가 높습니다. 크기와 상관없이 개념적 유사성을 이해하는 데 좋습니다.

    • 유클리드 거리 (Euclidean Distance): 두 벡터의 점 사이의 직선 거리를 측정합니다. 크기가 중요할 때 유용합니다.

  4. 결과 반환: 시스템은 가장 가까운 벡터에 해당하는 원본 항목(텍스트, 이미지 등)을 가져와 유사도 순으로 정렬하여 사용자에게 반환합니다.


일반적인 사용 사례

references